package com.smart.community.user.entity;

import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.smart.community.commons.base.BaseEntity;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 用户实体类
 * 
 * @author Wu.Liang
 * @since 2024-12-19
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sc_user")
public class User extends BaseEntity {

    /**
	 * @author Wu.Liang
	 * @date 2025年7月29日
	 */
	private static final long serialVersionUID = 2877936631762382448L;

	/**
     * 用户名
     */
    @TableField("username")
    private String username;

    /**
     * 密码
     */
    @TableField("password")
    private String password;

    /**
     * 真实姓名
     */
    @TableField("real_name")
    private String realName;

    /**
     * 昵称
     */
    @TableField("nickname")
    private String nickname;

    /**
     * 手机号
     */
    @TableField("phone")
    private String phone;

    /**
     * 邮箱
     */
    @TableField("email")
    private String email;

    /**
     * 头像
     */
    @TableField("avatar")
    private String avatar;

    /**
     * 性别：0-未知，1-男，2-女
     */
    @TableField("gender")
    private Integer gender;

    /**
     * 生日
     */
    @TableField("birthday")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private String birthday;

    /**
     * 身份证号
     */
    @TableField("id_card")
    private String idCard;

    /**
     * 住址
     */
    @TableField("address")
    private String address;

    /**
     * 用户类型：SUPER_ADMIN-超级管理员，PROPERTY_ADMIN-物业管理员，COMMUNITY_ADMIN-社区管理员，BUILDING_ADMIN-楼栋管理员，UNIT_ADMIN-单元管理员，HOUSEHOLD_ADMIN-房户管理员，NORMAL_USER-普通用户
     */
    @TableField("user_type")
    private String userType;

    /**
     * 状态：0-禁用，1-启用，2-待审核，3-锁定
     */
    @TableField("status")
    private Integer status;

    /**
     * 审核状态：0-待审核，1-审核通过，2-审核拒绝
     */
    @TableField("audit_status")
    private Integer auditStatus;

    /**
     * 是否Admin保护：0-否，1-是
     */
    @TableField("is_admin_protected")
    private Integer isAdminProtected;

    /**
     * 最后登录时间
     */
    @TableField("last_login_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime lastLoginTime;

    /**
     * 最后登录IP
     */
    @TableField("last_login_ip")
    private String lastLoginIp;

    /**
     * 登录失败次数
     */
    @TableField("login_fail_count")
    private Integer loginFailCount;

    /**
     * 锁定时间
     */
    @TableField("lock_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime lockTime;

    /**
     * 所属组织ID
     */
    @TableField("organization_id")
    private Long organizationId;

    /**
     * 物业公司ID
     */
    @TableField("property_company_id")
    private Long propertyCompanyId;

    /**
     * 所属社区ID
     */
    @TableField("community_id")
    private Long communityId;

    /**
     * 楼栋ID
     */
    @TableField("building_id")
    private Long buildingId;

    /**
     * 单元ID
     */
    @TableField("unit_id")
    private Long unitId;

    /**
     * 房户ID
     */
    @TableField("household_id")
    private Long householdId;
} 